function stopBubble(e) {
    if (e && e.stopPropagation) {
        e.stopPropagation();
    } else {
        window.event.cancelBubble = true;
    }
}

function sAddTr(th, item, help) {
    var tb = document.getElementById("sOptBody");
    if (th) {
        var tr = document.createElement('tr');
        var thead = document.createElement('thead');
        var thItem = document.createElement('th');
        thItem.className = 'blue';
        thItem.innerHTML = item;

        var thHelp = document.createElement('th');
        thHelp.className = 'red';
        thHelp.innerHTML = help;

        tr.appendChild(thItem);
        tr.appendChild(thHelp);
        thead.appendChild(tr);
        tb.appendChild(thead);
    } else {
        var tr = document.createElement('tr');
        var tdItem = document.createElement('td');
        tdItem.className = 'sOptItem blue';
        tdItem.innerHTML = item;
        tdItem.onclick = e => {
            document.getElementById('symopts').value += ' ' + e.target.innerHTML;
            document.getElementById('symopts').focus();
        };

        var tdHelp = document.createElement('td');
        tdHelp.className = 'sOptHelp red';
        tdHelp.innerHTML = help;

        tr.appendChild(tdItem);
        tr.appendChild(tdHelp);
        tb.appendChild(tr);
    }
}
function showhelp(e, mode) {
    document.getElementById('sFace').classList.remove('none');
    setTimeout("document.getElementById('sFace').style.height='300px';document.getElementById('sDialog').style.height='300px'", 100);
    var symval = document.getElementById('symbol').value;
    var incc = 0,pfnc = 0,inks = 0,text = 0,addo = 0,guar = 0,bord = 0,npar = 0,composite = 0,intro = '';
    if (symval == "ean5") {
        inks = 1;
        text = 1;
        guar = 1;
        npar = 1;
        intro = '此项可单独生成 EAN 的 5 位附加码';
    } else if (symval == "ean2") {
        inks = 1;
        text = 1;
        guar = 1;
        npar = 1;
        intro = '此项可单独生成 EAN 的 2 位附加码';
    } else if (symval == "ean13") {
        inks = 1;
        text = 1;
        addo = 1;
        guar = 1;
        npar = 1;
        intro = 'EAN-13 是欧洲商品条码，由国际物品编码协会于 1976 年设计，用于识别零售商品。<br>数据格式: 12 或 13 位数字，若输入 12 位数字，将自动计算校验码。<br>支持附加码，在编码数字后加空格，然后输入 2 位或 5 位附加码。';
    } else if (symval == "ean8") {
        inks = 1;
        text = 1;
        addo = 1;
        guar = 1;
        npar = 1;
        intro = 'EAN-8 是缩小版的 EAN-13，主要用于小包装。<br>数据格式:7 位或 8 位数字，若输入 7 位数字，将自动计算校验码。'
    } else if (symval == "upca") {
        inks = 1;
        text = 1;
        addo = 1;
        guar = 1;
        npar = 1;
        intro = 'UPC-A 条码用于识别在美国销售的零售商品。数据格式: 11或12位数字，若输入11位数字，将自动计算校验码。<br>也可输入 UPC-E 格式的7位或8位数字，其余数字会自动补充。<br>支持附加码，在编码数字后加空格，然后输入2位或5位附加码。';
    } else if (symval == "upce") {
        inks = 1;
        text = 1;
        addo = 1;
        guar = 1;
        npar = 1;
        intro = 'UPC-E 条码是 UPC-A 条码的一种压缩形式。<br>数据格式:7 位或 8 位数字，首位数字必须是 0 或 1，若输入 7 位数字，将自动计算校验码。<br>也可输入 UPC-A 格式的 11 位或 12 位数字，多余数字会自动压缩。<br>支持附加码，在编码数字后加空格，然后输入 2 位或 5 位附加码。';
    } else if (symval == "isbn") {
        inks = 1;
        text = 1;
        npar = 1;
        intro = 'ISBN 是国际标准书号，使用 EAN-13 格式编码。<br>数据格式: 12 位或 13 位数字，必须以 978- 或 979- 开头，其余数字使用 - 分为四组，最后一组是校验码。<br>也可不输入 978- 和校验码，将会自动计算并补充。例如:978-1-873671-00-9 或 1-873671-00。<br>支持附加码，在编码数字后加空格，然后输入 2 位或 5 位附加码。';
    } else if (symval == "ismn") {
        inks = 1;
        text = 1;
        npar = 1;
        intro = 'ISMN 是国际标准音乐编码，使用 EAN-13 格式编码。<br>数据格式: 12位或13位数字，必须以 979- 开头，其余数字使用 - 分为四组，最后一组是校验码。<br>也可输入以 M- 开头的旧的 ISMN-10 格式，将会自动转为新格式，若没有输入校验码，将会自动计算校验码。<br>支持附加码，在编码数字后加空格，然后输入 2 位或 5 位附加码。';
    } else if (symval == "issn") {
        inks = 1;
        text = 1;
        npar = 1;
        intro = 'ISSN 是国际标准期刊编码，使用 EAN-13 格式编码。<br>数据格式:7 位或 8 位数字使用 - 分为两组，第二组最后一位数字是校验码，若输入 7 位数字，将自动计算校验码。<br>可选空格后两位序列码，然后空格后可输入 2 位或 5 位附加码。例如:0391-175 45 00005 。';
    } else if (symval == "code128") {
        pfnc = 1;
        fncvals = 'FNC1 FNC2 FNC3';/* LNKA LNKC*/
        inks = 1;
        text = 1;
        intro = 'Code 128 是一种任意长度，可编码任意文字的条形码，主要用于物流和包装标识。';
    } else if (symval == "gs1-128") {
        inks = 1;
        text = 1;
        npar = 1;
        intro = 'GS1-128 使用 Code 128 格式编码 GS1 AI 格式数据。';
    } else if (symval == "ean14") {
        inks = 1;
        text = 1;
        npar = 1;
        intro = 'EAN-14 使用 Code 128 格式编码 GS1 AI(01) 格式数据，用于编码 14 位 GTIN (全球贸易项目代码)。<br>数据格式:必须以 (01) 开头，后接 14 位数字，若输入 13 位数字，将自动计算校验码。';
    } else if (symval == "sscc18") {
        inks = 1;
        text = 1;
        npar = 1;
        intro = 'SSCC 18 使用 Code 128 格式编码 GS1 AI(00) 格式数据，通常用于编码 18 位数字的集装箱序列号。<br>数据格式:必须以 (00) 开头，后接 18 位数字，若输入 17 位数字，将自动计算校验码。';
    } else if (symval == "code39") {
        incc = 1;
        inks = 1;
        text = 1;
        npar = 1;
        intro = 'Code 39 是于 1974 年设计发布的，任意长度，可选校验的条码。<br>数据格式:只允许大写字母 数字 空格和 -.$/+%* 七种符号。';
    } else if (symval == "code39ext") {
        inks = 1;
        text = 1;
        intro = 'Code 39 Extended 是 Code 39 条码的扩展形式。<br>数据格式:允许包含数字 字母 符号和空格等 128 种标准 ASCII 字符。';
    } else if (symval == "code32") {
        inks = 1;
        text = 1;
        npar = 1;
        intro = 'Italian Pharmacode 用于意大利的药品编码。<br>数据格式:8 位或 9 位数字，<br>如果编码开头是 A ，请不要将 A 输入。<br>若输入 8 位数字，将自动计算校验码。';
    } else if (symval == "pzn") {
        inks = 1;
        text = 1;
        npar = 1;
        intro = 'PZN 是用于德国制药行业的条码。<br>数据格式:两种编码:PZN7 和 PZN8。<br>默认使用 PZN7，指定 pzn8 选项可使用 PZN8 。<br>PZN7 格式为 7 位数字，最后一位是校验码。<br>PZN8 格式为 8 位数字，最后一位是校验码。<br>如果输入数字中没有包含校验码，将自动计算校验码。';
    } else if (symval == "code93") {
        incc = 1;
        //   pfnc=1;
        //   fncvals='SFT$ SFT% SFT/ SFT+';
        inks = 1;
        text = 1;
        npar = 1;
        intro = 'Code 93 是于 1982 年设计发布的，任意长度，可选校验的条码。<br>数据格式:只允许大写字母 数字 空格和 -.$/+%* 七种符号。';
    } else if (symval == "code93ext") {
        incc = 1;
        inks = 1;
        text = 1;
        intro = 'Code 93 Extended 是 Code 93 条码的扩展形式。<br>数据格式:允许包含数字 字母 符号和空格等 128 种标准 ASCII 字符。';
    } else if (symval == "interleaved2of5") {
        incc = 1;
        inks = 1;
        text = 1;
        npar = 1;
        intro = 'Interleaved 2 of 5 是一种只能编码数字的条形码。<br>如果在包含校验位之后，数字长度为奇数，那么将在数字前加 0 。';
    } else if (symval == "itf14") {
        inks = 1;
        text = 1;
        npar = 1;
        intro = 'ITF-14 使用 Interleaved 2 of 5 格式编码 14 位 GTIN (全球贸易项目代码)。<br>数据格式: 13 或 14 位数字，若输入 13 位数字，将自动计算校验码。';
    } else if (symval == "identcode") {
        inks = 1;
        text = 1;
        npar = 1;
        intro = 'Deutsche Post Identcode 使用 Interleaved 2 of 5 格式编码，用于德国邮局标识邮件。<br>数据格式: 11 或 12 位数字，<br>前两位为分发中心代码，<br>接着是三位客户编码，<br>然后是六位目的地邮政编码，<br>最后一位是校验码。<br>若输入 11 位数字，将自动计算校验码。';
    } else if (symval == "leitcode") {
        inks = 1;
        text = 1;
        npar = 1;
        intro = 'Deutsche Post Leitcode 使用 Interleaved 2 of 5 格式编码，用于德国邮局标识邮件。<br>数据格式: 13 或 14 位数字，依次为:<br>五位邮政编码，<br>三位街道编码，<br>三位门牌号，<br>两位产品代码，<br>一位校验码。若输入 13 位数字，将自动计算校验码。';
    } else if (symval == "databaromni") {
        inks = 1;
        // }else if(symval=="databarstacked"){
        // }else if(symval=="databarstackedomni"){
    } else if (symval == "databartruncated") {
        inks = 1;
    } else if (symval == "databarlimited") {
        inks = 1;
    } else if (symval == "databarexpanded") {
        inks = 1;
        // }else if(symval=="databarexpandedstacked"){
    } else if (symval == "gs1northamericancoupon") {
        text = 1;
        npar = 1;
        intro = 'GS1 北美优惠券码，使用 扩展式 GS1 DataBar 格式编码 GSI AI(8110) 格式数据，用于无纸优惠券。<br>数据格式:以(8110)开头，后接最长 30 位数字。';
    } else if (symval == "pharmacode") {
        inks = 1;
        npar = 1;
        intro = 'Pharmaceutical Binary Code 是用于制药行业的条码。<br>数据格式:只能编码从 3 到 131070 之间的整数。';
    } else if (symval == "pharmacode2") {
        inks = 1;
        text = 1;
        npar = 1;
        intro = 'Two-track Pharmacode 是 Pharmaceutical Binary Code 的变体，用于制药行业。<br>数据格式:只能编码从 4 到 64570080 之间的整数。';
    } else if (symval == "code2of5") {
        incc = 1;
        inks = 1;
        text = 1;
        npar = 1;
        intro = 'Code 2 of 5 是一种简单的 只能编码数字的条形码。';
    } else if (symval == "iata2of5") {
        inks = 1;
        text = 1;
        npar = 1;
        intro = 'IATA 2 of 5 是 Code 2 of 5 的变体，只能编码数字。';
    } else if (symval == "matrix2of5") {
        inks = 1;
        text = 1;
        npar = 1;
        intro = 'Matrix 2 of 5 是 Code 2 of 5 的变体，只能编码数字。';
    } else if (symval == "coop2of5") {
        inks = 1;
        text = 1;
        npar = 1;
        intro = 'COOP 2 of 5 是 Code 2 of 5 的变体，只能编码数字。';
    } else if (symval == "datalogic2of5") {
        inks = 1;
        text = 1;
        npar = 1;
        intro = 'Datalogic 2 of 5 是 Code 2 of 5 的变体，只能编码数字。';
    } else if (symval == "code11") {
        incc = 1;
        inks = 1;
        text = 1;
        npar = 1;
        intro = 'Code 11 是一种只能编码数字的条形码，主要用于标记电信设备。<br>数据格式:只能编码数字和 "-" 符号。<br>若数据小于 10 位将使用一位校验码，大于 10 位则使用两位校验码。'
    } else if (symval == "bc412") {
        incc = 1;
        inks = 1;
        text = 1;
        npar = 1;
        intro = 'BC412 条码用于半导体行业识别硅片。<br>数据格式:可编码数字和除 O 以外的大写字母。';
    } else if (symval == "rationalizedCodabar") {
        incc = 1;
        inks = 1;
        text = 1;
        npar = 1;
        intro = 'Codabar 是一种主要被图书馆、血库、照片实验室和联邦航空公司(FedEx airbills)使用的条码。<br>数据格式:可编码数字和 “-$:/.+” 六种符号和四个分隔字符。<br>输入内容开头和结尾必须为 A B C D 四个分隔字符中的一个，<br>如果指定了 altstartstop 选项，则分隔符将变为 T N E * 四个字符。';
    } else if (symval == "onecode") {
        inks = 1;
        npar = 1;
        intro = 'USPS Intelligent Mail 用于美国邮局记录信件邮件的收件人和发件人信息。<br>数据格式: 31 位数字编码，其中包含:<br>两位条码标志，<br>三位服务类型标志，<br>6 位或 9 位发件人标识码，<br>9 位或 6 位序列号，<br>11 位收件地址邮政编码。<br>校验码自动计算，所以不应输入校验码。';
    } else if (symval == "postnet") {
        inks = 1;
        text = 1;
        npar = 1;
        intro = 'USPS POSTNET 用于美国邮局记录邮政编码。<br>数据格式: 5 位，9 位或 13 位数字编码，不包含校验码。';
    } else if (symval == "planet") {
        inks = 1;
        text = 1;
        npar = 1;
        intro = 'USPS PLANET 用于美国邮局记录邮政编码。<br>数据格式: 11 位或 13 位数字编码，不包含校验码。';
    } else if (symval == "royalmail") {
        inks = 1;
        text = 1;
        npar = 1;
        intro = 'Royal Mail 4 State Customer Code 用于英国邮局记录邮政编码。<br>数据格式:只接受数字和大写字母，自动计算校验位。';
    } else if (symval == "auspost") {
        inks = 1;
        text = 1;
        npar = 1;
        intro = 'AusPost 4 State Customer Code 用于澳大利亚邮局记录邮政编码。<br>数据格式:前两位必须是以下数字组合之一: <br>    11 (标准客户条码，无附加信息) <br>    45 (未知) <br>    59 (客户条码格式2 附加信息长度 16 条( 8 位数字或 5 位字母)) <br>    62 (客户条码格式3 附加信息长度 31 条( 15 位数字或 10 位字母) <br>接下来是 8 位邮政编码，其余是用户附加信息。';
    } else if (symval == "kix") {
        inks = 1;
        text = 1;
        npar = 1;
        intro = 'Royal TNT Post 用于荷兰邮政对信箱中的交货点标识符进行编码。<br>数据格式:只接受数字和大写字母，自动计算校验位。';
    } else if (symval == "japanpost") {
        inks = 1;
        text = 1;
        npar = 1;
        intro = 'Japan Post 4 State Customer Code 用于日本邮局记录邮政编码。<br>数据格式:最多 20 位数字或 10 位字母，<br>只接受数字 大写字母和\'-\'符号，自动计算校验码。';
    } else if (symval == "msi") {
        incc = 1;
        inks = 1;
        text = 1;
        npar = 1;
        intro = 'MSI Plessey 是 Plessey 条码的变体，只能编码数字。<br>自动计算校验码。';
    } else if (symval == "plessey") {
        inks = 1;
        text = 1;
        npar = 1;
        intro = 'Plessey 是任意长度，用于编码十六进制数字的条码。<br>数据格式:只接受数字和大写字母 A-F 。自动计算校验码。';
    } else if (symval == "telepen") {
        inks = 1;
        text = 1;
        intro = 'Telepen 是 1972 年在英国设计的一种任意长度的条码。<br>数据格式:允许包含数字 字母 符号和空格等 128 种标准 ASCII 字符。';
    } else if (symval == "telepennumeric") {
        inks = 1;
        text = 1;
        intro = 'Telepen Numeric 是 Telepen 条码的变体，用于更有效的编码数字。<br>数据格式:接受数对，也接受 1X,2X 的格式，<br>使用 parse 选项后也可编码 ^001 到 ^016 。<br>自动计算校验码。';
    } else if (symval == "posicode") {
        inks = 1;
        pfnc = 1;
        fncvals = 'FNC1 FNC2 FNC3';
        text = 1;
        intro = 'PosiCode 是一种任意长度的条码，被设计用于难以精确控制条形宽度的打印过程。<br>数据格式:标准格式(a,b)支持任意字符，<br>限制格式(limiteda,limitedb)支持大写字母 数字 “-” 和 “.” 两个符号。';
    } else if (symval == "codablockf") {
        pfnc = 1;
        fncvals = 'FNC1 FNC3';
        intro = 'Codablock F 是一种堆叠二维码，包含多个 Code 128 条码。<br>最多可容纳 5450 个数字或 2725 个字母和符号';
    } else if (symval == "code16k") {
        pfnc = 1;
        fncvals = 'FNC1 FNC2 FNC3';
        intro = 'Code 16K 是一种堆叠二维码，每行块容纳 5 个字母或 10 个数字。<br>此生成器最多可生成 16 行，最多可容纳 154 个数字或 67 个字母和符号。<br>数据格式:包含 3 组字符集，预设 7 个模式  <br> A:包含数字 大写字母和控制字符 <br> B:包含 A 字符集加小写字母 <br> C:包含从 00 到 99 的数字组合。';
    } else if (symval == "code49") {
        pfnc = 1;
        fncvals = 'FNC1 FNC2 FNC3';
        intro = 'Code 49 是一种堆叠二维码，最多可容纳 81 个数字或 49 个字母和符号。'
    } else if (symval == "channelcode") {
        incc = 1;
        inks = 1;
        text = 1;
        npar = 1;
        intro = 'Channel Code 用于在小空间内编码 2 到 7 位数字。<br>数据格式:只接受以下数值:<br>00-26<br>000-292<br>0000-3493<br>00000-44072<br>000000-576688<br>0000000-7742862<br>';
    } else if (symval == "flattermarken") {
        inks = 1;
        text = 1;
        npar = 1;
    } else if (symval == "raw") {
        inks = 1;
        npar = 1;
    } else if (symval == "daft") {
        inks = 1;
        npar = 1;
    } else if (symval == "symbol") {
        inks = 1;
        npar = 1;
        intro = 'USPS FIM symbols 是由美国邮政局设计的条形码，主要用于预印信封和明信片。<br>数据格式:只接受以下内容:<br>  fima    用于邮寄常规邮资和 POSTNET 条形码 <br>  fimb    用于商业回复邮件 <br>  fimc    用于带有预打印的 POSTNET 条形码的业务回复邮件 <br>  fimd    用于 IBI 邮资。';
    } else if (symval == "pdf417") {
        intro = 'PDF417 由美国 Symbol Technologies 公司在 1991 年设计的二维码，<br>最多可容纳<br> 2710 个数字 或<br> 1850 个字母 或<br> 1108 字节二进制数据。';
    } else if (symval == "pdf417compact") {
        intro = 'Compact PDF417 是缩小版的 PDF417 码，用于更小的印刷空间。';
    } else if (symval == "micropdf417") {
        intro = 'MicroPDF417 是比 Compact PDF417 更小的 PDF417 码';
    } else if (symval == "datamatrix") {
        pfnc = 1;
        fncvals = 'FNC1 PROG'; /*MAC5 MAC6*/
        intro = 'Data Matrix 码由美国 ID Matrix 公司在 1990 年设计的二维码，最多可容纳 3116 个数字或字母。<br>只要数据字段包含合适的输入，编码会被压缩为 ISO/IEC 15434 结构化数据。';
    } else if (symval == "datamatrixrectangular") {
        pfnc = 1;
        fncvals = 'FNC1 PROG'; /*MAC5 MAC6*/
        intro = 'Data Matrix Rectangular 相当于 Data Matrix 设置选项 format=rectangle 。'
    } else if (symval == "qrcode") {
        pfnc = 1;
        fncvals = 'FNC1';
        intro = 'QR 码是由日本 Denso Wave 公司在 1994 年设计的二维码，<br>最多可容纳<br> 7089 个数字 或<br> 4296 个字母符号 或<br> 1817 个日本假名和汉字 或<br> 2953 字节二进制数据。';
    } else if (symval == "microqrcode") {
        pfnc = 1;
        fncvals = 'FNC1';
        intro = 'Micro QR 码是缩小版的 QR 码，用于更小的印刷空间。<br>最多可容纳<br> 35 个数字 或<br> 15 个字母符号 或<br> 5 个日本假名和汉字。';
    } else if (symval == "rectangularmicroqrcode") {
        pfnc = 1;
        fncvals = 'FNC1';
        intro = 'Rectangular Micro QR Code 码是缩小版的、长方形的 QR 码，目前处于草案阶段。<br>用于弯曲的表面（例如试管）。<br>便于使用有限高度的标记技术（例如连续喷墨打印机）进行作业。';
    } else if (symval == "swissqrcode") {
        pfnc = 1;
        fncvals = 'FNC1';
        intro = 'Swiss QR Code 是 QR 码的一种变体，可与支持瑞士付款的 QR 账单应用程序一起使用。<br><br>注意: Swiss QR Code 在 SVG 模式无法绘图。';
    } else if (symval == "maxicode") {
        intro = 'MaxiCode 由美国 UPS 快递公司在 1992 发明，最多可容纳 138 个数字或 93 个字母符号。<br>数据格式:此生成器支持 5 种模式 mode=2,3,4,5,6 <br>模式 2 和模式 3 只接受"结构化载体信息"(Structured Carrier Message)，<br>模式 2 主要用于美国国内，模式 3 用于国际，<br>模式 4 和 5 用于编码普通信息，模式 6 用于专用扫码器。<br>结构化载体信息格式:<br>1.可选信息头:[)>^03001^029[两位年份] <br>2.主要结构:[邮政编码]^029[3位国家代码]^029[3位服务代码]^029[快递单号]^029......';
    } else if (symval == "azteccode") {
        intro = 'Aztec Code 由 AIM Global 发布于 1997 年，<br>最多可容纳<br> 3832 个数字 或<br> 3067 个字母 或<br> 1914 字节二进制数据。';
    } else if (symval == "azteccodecompact") {
        intro = 'Compact Aztec Code 相当于 Aztec Code 设置选项 format=compact 。'
    } else if (symval == "aztecrune") {
        npar = 1;
        intro = 'Aztec Runes 是用于附加标记的更小的 Aztec Code ，它只能编码 0 到 255 的整数。';
    } else if (symval == "codeone") {
        pfnc = 1;
        fncvals = 'FNC1 FNC3';
        intro = 'Code One 由 Ted Williams 于 1992 年发明，用于医疗保健和回收行业。<br>最多可容纳 3550 个数字或 2218 个字母符号。<br>数据格式:此二维码有 3 种类型，标准类型有 8 个版本。<br>标准类型 和 T 类型 可编码文本， S 类型只能编码数字。';
    } else if (symval == "hanxin") {
        intro = '汉信码由中国物品编码中心在 2005 年发布，<br>最多可容纳<br> 7829 个数字 或<br> 4350 个字母符号 或<br> 2174 个汉字 或<br> 3262 字节二进制数据。';
    } else if (symval == "dotcode") {
        inks = 1;
        pfnc = 1;
        fncvals = 'FNC1 FNC2 FNC3';
        intro = 'DotCode 由 AIM Global 发布于 2009 年，用于标识单个卷烟和药品包装。<br>最大数据容量：450（字母）, 900（纯数字） 。';
    } else if (symval == "gs1-cc") {
        composite = 1;
    } else if (symval == "ean13composite") {
        text = 1;
        addo = 1;
        guar = 1;
        composite = 1;
        npar = 1;
    } else if (symval == "ean8composite") {
        text = 1;
        addo = 1;
        guar = 1;
        composite = 1;
        npar = 1;
    } else if (symval == "upcacomposite") {
        text = 1;
        addo = 1;
        guar = 1;
        composite = 1;
        npar = 1;
    } else if (symval == "upcecomposite") {
        text = 1;
        addo = 1;
        guar = 1;
        composite = 1;
        npar = 1;
    } else if (symval == "databaromnicomposite") {
        inks = 1;
        composite = 1;
    } else if (symval == "databarstackedcomposite") {
        composite = 1;
    } else if (symval == "databarstackedomnicomposite") {
        composite = 1;
    } else if (symval == "databartruncatedcomposite") {
        composite = 1;
        bord = 1;
    } else if (symval == "databarlimitedcomposite") {
        composite = 1;
        bord = 1;
    } else if (symval == "databarexpandedcomposite") {
        composite = 1;
        bord = 1;
    } else if (symval == "databarexpandedstackedcomposite") {
        composite = 1;
    } else if (symval == "gs1-128composite") {
        text = 1;
        composite = 1;
        bord = 1;
    } else if (symval == "gs1datamatrix") {
        pfnc = 1;
        fncvals = 'FNC1 PROG'; /*MAC5 MAC6*/
        intro = 'GS1 Data Matrix 使用 Data Matrix 码编码 GS1 AI 格式数据。';
    } else if (symval == "gs1datamatrixrectangular") {
        pfnc = 1;
        fncvals = 'FNC1 PROG'; /*MAC5 MAC6*/
        intro = 'GS1 Data Matrix Rectangular 使用 Data Matrix Rectangular 编码 GS1 AI 格式数据。';
    } else if (symval == "gs1qrcode") {
        pfnc = 1;
        fncvals = 'FNC1';
        intro = 'GS1 QR Code 使用 QR 码编码 GS1 AI 格式数据。';
    } else if (symval == "hibccode39") {
        inks = 1;
        npar = 1;
        intro = 'HIBC Code 39 使用 Code 39 编码 HIBC (美国保健业商务通信委员会) 的 LIC (供应商标签编码) 和 PAS (供应商应用编码) 格式数据。';
    } else if (symval == "hibccode128") {
        inks = 1;
        intro = 'HIBC Code 128 使用 Code 128 编码 HIBC (美国保健业商务通信委员会) 的 LIC (供应商标签编码) 和 PAS (供应商应用编码) 格式数据。';
    } else if (symval == "hibcdatamatrix") {
        pfnc = 1;
        fncvals = 'FNC1 PROG'; /*MAC5 MAC6*/
        intro = 'HIBC Data Matrix 使用 Data Matrix 编码 HIBC (美国保健业商务通信委员会) 的 LIC (供应商标签编码) 和 PAS (供应商应用编码) 格式数据。';
    } else if (symval == "hibcdatamatrixrectangular") {
        pfnc = 1;
        fncvals = 'FNC1 PROG'; /*MAC5 MAC6*/
        intro = 'HIBC Data Matrix Rectangular 使用 Data Matrix Rectangular 编码 HIBC (美国保健业商务通信委员会) 的 LIC (供应商标签编码) 和 PAS (供应商应用编码) 格式数据。';
    } else if (symval == "hibcpdf417") {
        intro = 'HIBC PDF417 使用 PDF417 码编码 HIBC (美国保健业商务通信委员会) 的 LIC (供应商标签编码) 和 PAS (供应商应用编码) 格式数据。';
    } else if (symval == "hibcmicropdf417") {
        intro = 'HIBC MicroPDF417 使用 MicroPDF417 码编码 HIBC (美国保健业商务通信委员会) 的 LIC (供应商标签编码) 和 PAS (供应商应用编码) 格式数据。';
    } else if (symval == "hibcqrcode") {
        pfnc = 1;
        fncvals = 'FNC1';
        intro = 'HIBC QR Code 使用 QR 码编码 HIBC (美国保健业商务通信委员会) 的 LIC (供应商标签编码) 和 PAS (供应商应用编码) 格式数据。';
    } else if (symval == "hibccodablockf") {
        pfnc = 1;
        fncvals = 'FNC1 FNC3';
        intro = 'HIBC Codablock F 使用 Codablock F 编码 HIBC (美国保健业商务通信委员会) 的 LIC (供应商标签编码) 和 PAS (供应商应用编码) 格式数据。';
    } else if (symval == "hibcazteccode") {
        intro = 'HIBC Aztec Code 使用 Aztec Code 编码 HIBC (美国保健业商务通信委员会) 的 LIC (供应商标签编码) 和 PAS (供应商应用编码) 格式数据。';
    } else if (symval == "mailmark") {
        intro = 'Royal Mail Mailmark 是英国邮政系统使用 Data Matrix 编码用来记录邮件信息。<br>数据字段包含 45 个字符的结构化数据（包括所需的空格填充），后跟可变长度，自由格式的客户数据。';
    } else if (symval == "ultracode") {
        pfnc = 1;
        fncvals = 'FNC1 FNC3';
        intro = 'Ultracode 是一种彩色，可纠错的二维码。<br>被设计用于智能手机，数字彩色打印机上显示，打印，扫描。<br>具有存储容量更大，使用更便携的特点。<br>发明者说:“地球上销量最大的条码扫描器不是扫描仪，而是智能手机。<br>智能手机相机的分辨率等于或优于某些工业二维码扫描仪。”';
    }
    if (mode == 'opt') {
        document.getElementById('sHelp').classList.add('none');
        document.getElementById('sTitle').innerHTML = '选项说明';
        document.getElementById("sOptBody").innerHTML = '';
        sAddTr(true, '选项', '说明');
        sAddTr(false, 'width=', '拉伸到指定宽度 单位英寸');
        sAddTr(false, 'height=', '拉伸到指定高度 单位英寸');
        sAddTr(false, 'backgroundcolor=', '背景颜色 格式:<br>RRGGBB 或 CCMMYYKK');
        sAddTr(false, 'barcolor=', '前景颜色 格式:<br>RRGGBB 或 CCMMYYKK');
        sAddTr(false, 'textcolor=', '附加/嵌入文字颜色 格式:<br>RRGGBB 或 CCMMYYKK');
        sAddTr(false, 'paddingwidth=', '填充宽度');
        sAddTr(false, 'paddingheight=', '填充高度');
        if (symval == "gs1northamericancoupon" || symval == "databarexpandedstacked") {
            sAddTr(false, 'segments=', '最大段数，必须为偶数，默认为 4');
        }
        if (composite == 1) {
            if (symval == "gs1-128composite" || symval == "gs1-cc") {
                sAddTr(false, 'ccversion=', '设置二维编码组件类型 可选值:<br>a,b,c');
            } else {
                sAddTr(false, 'ccversion=', '设置二维编码组件类型 可选值:<br>a,b');
            };
        }
        if (symval == "gs1-cc") {
            sAddTr(false, 'cccolumns=', '设置二维编码组件行数 可选值:<br>3 (CC-A)<br>4 (CC-B)<br>5 (CC-C)');
        }
        if (symval == "qrcode" || symval == "gs1qrcode" || symval == "hibcqrcode") {
            sAddTr(false, 'version=', '版本，1~40 版本越大 可存储的字符越多<br>默认为指定内容所需最小版本');
            sAddTr(false, 'eclevel=', '纠错级别 可选值:<br>L,M,Q,H 默认为M');
        } else if (symval == "microqrcode") {
            sAddTr(false, 'version=', '版本，可选值:M1,M2,M3,M4 <br>M1 只能存储数字 <br>M2 只能存储数字和字母 <br>默认为指定内容所需最小版本');
            sAddTr(false, 'eclevel=', '纠错级别 可选值:L,M,Q 默认为 L <br>L 级别不能用于 M1 版本 <br>Q 级别只能用于 M4 版本');
        } else if (symval == "swissqrcode") {
            sAddTr(false, 'version=', '版本 5~25 版本越大 可存储的字符越多<br>默认为指定内容所需最小版本');
            sAddTr(false, 'eclevel=', '纠错级别 可选值:<br>L,M,Q,H 默认为M');
        } else if (symval == "rectangularmicroqrcode") {
            sAddTr(false, 'version=', '版本，可选值:<br>R7x43, R7x59, R7x77, R7x99, R7x139, <br>R9x43, R9x59, R9x77 R9x99, R9x139, <br>R11x27, R11x43, R11x59, R11x77, R11x99, R11x139, <br>R13x27, R13x43, R13x59, R13x77, R13x99, R13x139, <br>R15x43, R15x59, R15x77, R15x99, R15x139, <br>R17x43, R17x59, R17x77, R17x99, R17x139, <br>没有默认值，必须指定版本。');
            sAddTr(false, 'eclevel=', '纠错级别 可选值:<br>M,H 默认为M');
        }
        if (symval == "azteccode") {
            sAddTr(false, 'format=', '选择二维码格式 可选值:full,compact');
        }
        if (symval == "azteccode" || symval == "azteccodecompact") {
            sAddTr(false, 'eclevel=', '指定用于纠错的数据占用百分比 默认值为 23 ');
            sAddTr(false, 'ecaddchars=', '用于指定在按 eclevel 百分比展开之后应用数据的附加纠错字符数 默认为 3');
            sAddTr(false, 'layers=', '指定用于存放数据的层数 1~32 默认为指定内容所需最小层数');
            sAddTr(false, 'readerinit', '指定此选项，可加入用于条码扫描器的数据');
            sAddTr(false, 'raw', '将输入数据处理为适合于直接低级编码的预编码比特流');
        }
        if (symval == "datamatrix" || symval == "gs1datamatrix" || symval == "hibcdatamatrix") {
            sAddTr(false, 'format=', '选择二维码形状 可选值:<br>square,rectangle');
            sAddTr(false, 'dmre', '开启 Data Matrix Rectangular 扩展，可支持更大的版本，依赖选项 format=rectangle');
            sAddTr(false, 'columns=', '指定横向尺寸');
            sAddTr(false, 'rows=', '指定纵向尺寸');
            sAddTr(false, 'version=', '版本:<br>如果 format=square 可选值:<br>10x10, 12x12, 14x14, 16x16, 18x18, 20x20, 22x22, 24x24, 26x26, 32x32, 36x36, 40x40, 44x44, 48x48, 52x52, 64x64, 72x72, 80x80, 88x88, 96x96, 104x104, 120x120, 132x132, 144x144 <br>如果 format=rectangle 可选值:<br>8x18, 8x32, 12x26, 12x36, 16x36, 16x48 <br>如果 format=rectangle 并且指定 dmre 选项 可选值:<br>8x18, 8x32, 8x48, 8x64, 12x26, 12x36, 12x64, 16x36, 16x48, 16x64, 24x32, 24x36, 24x48, 24x64, 26x32, 26x40, 26x48, 26x64 <br>默认为指定内容所需最小版本');
        } else if (symval == "datamatrixrectangular" || symval == "gs1datamatrixrectangular" || symval == "hibcdatamatrixrectangular") {
            sAddTr(false, 'dmre', '开启 Data Matrix Rectangular 扩展，可支持更大的版本');
            sAddTr(false, 'columns=', '指定横向尺寸');
            sAddTr(false, 'rows=', '指定纵向尺寸');
            sAddTr(false, 'version=', '版本，可选值:<br>8x18, 8x32, 12x26, 12x36, 16x36, 16x48 <br>如果指定 dmre 选项 可选值:<br>8x18, 8x32, 8x48, 8x64, 12x26, 12x36, 12x64, 16x36, 16x48, 16x64, 24x32, 24x36, 24x48, 24x64, 26x32, 26x40, 26x48, 26x64 <br>默认为指定内容所需最小版本');
        }
        if (symval == "pdf417" || symval == "hibcpdf417" || symval == "pdf417compact") {
            sAddTr(false, 'eclevel=', '纠错级别 1~5 默认根据数据长度自动选择');
            sAddTr(false, 'columns=', '指定编码块行数 1~30');
            sAddTr(false, 'rows=', '指定最小编码块列数 3~90');
            sAddTr(false, 'rowmult=', '指定列中每个条的高度 默认为 3');
            sAddTr(false, 'raw', '将使用 ^000 格式的输入数据处理为适合于直接低级编码的预编码比特流');
        } else if (symval == "mircopdf417" || symval == "hibcmicropdf417") {
            sAddTr(false, 'columns=', '指定编码块列数');
            sAddTr(false, 'rows=', '指定编码块行数');
            sAddTr(false, '', '列数和行数可用组合:<br>1x11, 1x14, 1x17, 1x20, 1x24, 1x28, 2x8, 2x11, 2x14, 2x17, 2x20, 2x23, 2x26, 3x6, 3x8, 3x10, 3x12, 3x15, 3x20, 3x26, 3x32, 3x38, 3x44, 4x4, 4x6, 4x8, 4x10, 4x12, 4x15, 4x20, 4x26, 4x32, 4x38, 4x44');
            sAddTr(false, 'rowmult=', '指定列中每个条的高度 默认为 3');
            sAddTr(false, 'raw', '将使用 ^000 格式的输入数据处理为适合于直接低级编码的预编码比特流');
        }
        if (symval == "hanxin") {
            sAddTr(false, 'eclevel=', '纠错级别 可选值:L1,L2,L3,L4');
            sAddTr(false, 'version=', '版本，1~84 版本越大 可存储的字符越多<br>默认为指定内容所需最小版本');
        }
        if (symval == "maxicode") {
            sAddTr(false, 'mode=', '编码模式 可选值:2,3,4,5,6');
        }
        if (symval == "codablockf" || symval == "hibccodablockf") {
            sAddTr(false, 'columns=', '指定编码块列数 默认为 8');
            sAddTr(false, 'rows=', '指定编码块行数 2~44 默认为指定内容所需最小行数');
            sAddTr(false, 'raw', '将使用 ^000 格式的输入数据处理为适合于直接低级编码的预编码比特流');
            sAddTr(false, 'rowheight=', '指定编码行高度 默认为 10');
            sAddTr(false, 'sepheight=', '指定编码行分隔符高度 默认为 1');
        }
        if (symval == "code16k") {
            sAddTr(false, 'mode=', '编码模式 可选值:0,1,2,3,4,5,6 <br> mode=0 使用字符集 A <br> mode=1 使用字符集 B <br> mode=2 使用字符集 C <br> mode=3 使用字符集 B 加功能符号 FNC1 <br> mode=4 使用字符集 C 加功能符号 FNC1 <br> mode=5 使用字符集 C 加功能符号 Shift B <br> mode=6 使用字符集 C 加功能符号 Double Shift B');
            sAddTr(false, 'pos=', 'The pos option specifies this symbol to be part of multi-part structured data. For example pos=25 specifies this to be the second symbol in a group of five symbols.');
            sAddTr(false, 'rows=', '指定编码块行数 2~16 默认为指定内容所需最小行数');
            sAddTr(false, 'raw', '将使用 ^000 格式的输入数据处理为适合于直接低级编码的预编码比特流');
            sAddTr(false, 'rowheight=', '指定编码行高度 默认为 10');
            sAddTr(false, 'sepheight=', '指定编码行分隔符高度 默认为 1');
        }
        if (symval == "code49") {
            sAddTr(false, 'mode=', '编码模式 可选值:0,1,2,3,4,5,6 <br> mode=0 普通数字和字母模式 <br> mode=1 附加模式 <br> mode=2 纯数字模式 <br> mode=3 分组数字和字母模式 <br> mode=4 由功能符号 shift 1 开头的数字和字母模式 <br> mode=5 由功能符号 shift 2 开头的数字和字母模式  <br> mode=6 未定义');
            sAddTr(false, 'pos=', 'The pos option specifies this symbol to be part of multi-part structured data, i.e. selecting mode=3. For example pos=25 specifies this to be the second symbol in a group of five symbols.');
            sAddTr(false, 'rows=', '指定编码块行数 2~16 默认为指定内容所需最小行数');
            sAddTr(false, 'rowheight=', '指定编码行高度 默认为 10');
            sAddTr(false, 'sepheight=', '指定编码行分隔符高度 默认为 1');
        }
        if (symval == "codeone") {
            sAddTr(false, 'version=', '类型和版本:<br>标准类型有 A,B,C,D,E,F,G,H 八个版本<br> S 类型的版本有 S-10,S-20,S-30 <br> T 类型的版本有 T-16,T-32,T-48');
        }
        if (symval == "dotcode") {
            sAddTr(false, 'ratio=', '指定二维码长与宽的比例,默认 1.5');
            sAddTr(false, 'columns=', '指定编码块列数');
            sAddTr(false, 'rows=', '指定编码块行数');
        }
        if (symval == "auspost") {
            sAddTr(false, 'custinfoenc=', '用户附加信息格式 <br>如果附加信息是字母，要指定 custinfoenc=character 支持大小写字母 数字 空格和\'#\'号 <br>如果附加信息是数字，要指定 custinfoenc=numeric');
        }
        if (symval == "pharmacode") {
            sAddTr(false, 'nwidth=', '指定窄条宽度');
            sAddTr(false, 'wwidth=', '指定宽条宽度');
            sAddTr(false, 'swidth=', '指定条间隔宽度');
        }
        if (symval == "pzn") {
            sAddTr(false, 'pzn8', '使用 PZN8 编码');
        }
        if (symval == "code39" || symval == "code39ext") {
            sAddTr(false, 'hidestars', '隐藏在嵌入文本中首尾的 * 号');
        }
        if (symval == "code128") {
            sAddTr(false, 'raw', '将使用 ^000 格式的输入数据处理为适合于直接低级编码的预编码比特流');
        }
        if (symval == "rationalizedCodabar") {
            sAddTr(false, 'altstartstop', '指定此选项将使用备用分隔符(TNE*)');
        }
        if (symval == "plessey") {
            sAddTr(false, 'unidirectional', '指定此选项将生成单向 Plessey 条码');
        }
        if (symval == "msi") {
            sAddTr(false, 'checktype=', '设置校验算法 可选值:<br>mod10,mod1010,mod11,mod1110,ncrmod11,ncrmod1110');
            sAddTr(false, 'badmod10', '用于解决在 checktype=mod11 算法下，校验值为 10 无效的问题');
        }
        if (symval == "channelcode") {
            sAddTr(false, 'shortfinder', '指定此选项将减少标志位条数');
        }
        if (symval == "posicode") {
            sAddTr(false, 'version=', '选择编码格式，可选值:<br>a,b,limitda,limitedb');
        }
        if (symval == "ultracode") {
            sAddTr(false, 'eclevel=', '纠错级别 可选值:EC0,EC1,EC2,EC3,EC4,EC5 默认 EC2');
        }
        if (symval == "bc412") {
            sAddTr(false, 'includestartstop', '在条码中包含起始条和结束条');
            sAddTr(false, 'semi', '生成符合 SEMI 标准的条码');
        }
        if (text == 1) {
            sAddTr(false, 'includetext', '在条码中添加嵌入文字');
            sAddTr(false, 'textfont=', '嵌入文字字体 可用字体:<br>OCR-A,OCR-B,Inconsolata');
            sAddTr(false, 'textsize=', '嵌入文字大小');
            // 		sAddTr(false,'alttext',''); true ?
            sAddTr(false, 'textxalign=', '设置字体横向对齐 可选值:<br>offleft,left,center,right,offright,justify');
            sAddTr(false, 'textyalign=', '设置字体纵向对齐 可选值:<br>below,center,above');
            sAddTr(false, 'textgaps=', '嵌入文字间距');
            sAddTr(false, 'textxoffset=', '设置字体横向位置');
            sAddTr(false, 'textyoffset=', '设置字体纵向位置');
        }
        if (addo == 1) {
            sAddTr(false, 'addontextxoffset=', '附加码文字横向位置');
            sAddTr(false, 'addontextyoffset=', '附加码文字纵向位置');
            sAddTr(false, 'addontextfont=', '附加码文字字体 可用字体:<br>OCR-A,OCR-B,Inconsolata');
            sAddTr(false, 'addontextsize=', '附加码文字大小');
        }
        if (symval == "isbn") {
            sAddTr(false, 'isbntextfont=', '条码上方文字字体 可用字体:<br>OCR-A,OCR-B,Inconsolata');
            sAddTr(false, 'isbntextsize=', '条码上方文字大小');
            sAddTr(false, 'isbntextxoffset=', '条码上方文字横向位置');
            sAddTr(false, 'isbntextyoffset=', '条码上方文字纵向位置');
        }
        if (symval == "ismn") {
            sAddTr(false, 'ismntextfont=', '条码上方文字字体 可用字体:<br>OCR-A,OCR-B,Inconsolata');
            sAddTr(false, 'ismntextsize=', '条码上方文字大小');
            sAddTr(false, 'ismntextxoffset=', '条码上方文字横向位置');
            sAddTr(false, 'ismntextyoffset=', '条码上方文字纵向位置');
        }
        if (symval == "issn") {
            sAddTr(false, 'issntextfont=', '条码上方文字字体 可用字体:<br>OCR-A,OCR-B,Inconsolata');
            sAddTr(false, 'issntextsize=', '条码上方文字大小');
            sAddTr(false, 'issntextxoffset=', '条码上方文字横向位置');
            sAddTr(false, 'issntextyoffset=', '条码上方文字纵向位置');
        }
        if (symval == "mailmark") {
            sAddTr(false, 'type=', '强制指定大小 可选值: 7 9 29');
        }
        if (inks == 1 || bord == 1) {
            sAddTr(false, 'showborder', '显示边框');
            sAddTr(false, 'borderwidth=', '边框宽度');
            sAddTr(false, 'borderleft=', '左边框拉伸');
            sAddTr(false, 'borderright=', '右边框拉伸');
            sAddTr(false, 'bordertop=', '上边框拉伸');
            sAddTr(false, 'borderbottom=', '下边框拉伸');
            sAddTr(false, 'bordercolor=', '边框颜色 格式:<br>RRGGBB 或 CCMMYYKK');
        }
        if (inks == 1) {
            sAddTr(false, 'inkspread=', '缩短条宽度以补偿油墨的量');
        }
        if (npar == 0) {
            sAddTr(false, 'parse', '使用 ^255 格式处理无法输入的内容<br>例如 ^010:换行');
        }
        if (pfnc == 1) {
            sAddTr(false, 'parsefnc', '使用 ^FNC1 格式处理功能符号 <br>支持的功能符号有:' + fncvals);
        }
        if (guar == 1) {
            sAddTr(false, 'guardwhitespace', '添加边界指示符 < >');
            sAddTr(false, 'guardwidth=', '指示符宽度');
            sAddTr(false, 'guardheight=', '指示符高度');
            sAddTr(false, 'guardleftpos=', '左指示符横向位置');
            sAddTr(false, 'guardrightpos=', '右指示符横向位置');
            sAddTr(false, 'guardleftypos=', '左指示符纵向位置');
            sAddTr(false, 'guardrightypos=', '右指示符纵向位置');
        }
        if (incc == 1) {
            sAddTr(false, 'includecheck', '在编码时计算可选校验值');
            sAddTr(false, 'includecheckintext', '将计算的校验值写入嵌入文本中');
        }
        sAddTr(false, '', '');
        document.getElementById('sOpt').classList.remove('none');
    } else {
        document.getElementById('sOpt').classList.add('none');
        document.getElementById('sTitle').innerHTML = symdesc[symval].desc;
        document.getElementById('sHelp').innerHTML = intro;
        document.getElementById('sHelp').classList.remove('none');
    }

    stopBubble(e);
    document.onclick = function () {
        setTimeout("document.getElementById('sDialog').style.height='0px';document.getElementById('sFace').style.height='0px'", 100);
        setTimeout("document.getElementById('sFace').classList.add('none')", 1000);
        document.onclick = null;
    }
    document.getElementById('sFace').onclick = function (e) { stopBubble(e); }
}
function descctl(symval) {
    switch (symval) {
        case 'raw':
        case 'daft':
        case 'flattermarken':
        case 'ean13composite':
        case 'ean8composite':
        case 'upcacomposite':
        case 'upcecomposite':
        case 'databarexpandedstackedcomposite':
        case 'databarexpandedcomposite':
        case 'databarlimitedcomposite':
        case 'databaromnicomposite':
        case 'databarstackedcomposite':
        case 'databarstackedomnicomposite':
        case 'databartruncatedcomposite':
        case 'gs1-128composite':
        case 'databarexpanded':
        case 'databarexpandedstacked':
        case 'databarlimited':
        case 'databaromni':
        case 'databarstacked':
        case 'databarstackedomni':
        case 'databartruncated':
        case 'gs1-cc':
            document.getElementById("symhelp").classList.add('none');
            break;
        default:
            document.getElementById("symhelp").classList.remove('none');
    }
}
